import godebug from '../godebug'
import performance from '../performance'
import timing from '../performance/timing'
import utils from '../utils/'
import ajax from '../request/ajax'
import baseData from '../baseData'
export default (function() {
    /*
    open 请求打开事件
    send 请求发送事件
    ready 当 DOM（文档对象模型） 已经加载完成
    error 页面js错误事件
    report jss上报事件
    httpDone    http请求完成
    notFound    资源没找到
    httpError  服务器错误
    httpComplete
    data{
        type 错误事件类型
        message 错误信息
        lineno  行号
        colno 列号
        filename 文件名
        stack 堆栈信息
        timeStamp 错误时间
    }
    */
    godebug.on('load', function(res) {
        _log('load','源加载完毕');
        godebug.emit('performanceReport');
    })
    godebug.on('ready', _ => {
        _log('ready')
        
        _log(godebug.$$reqUrl)
        // return false
        godebug.emit('performanceReport')
    });
    godebug.on('httpComplete', function(res) {
      //   _log('httpComplete', res)
        if (this.$$reqUrl[utils.getReqUrl(res.reqUrl)]) {
            this.$$reqUrl[utils.getReqUrl(res.reqUrl)] = 'completed';
            this.$$reqUrlCount--;
            _log('load',this.$$reqUrlCount)       
            if (this.$$reqUrlCount == 0) {
                this.emit('load');
            }
        }

    });
    godebug.on('notFound', res => {
        _log('notFound', res)
            // godebug.$$reqUrl[res.reqUrl] = 'completed';
    })
    godebug.on('performanceReport', () => {
        let data = {
            timing:timing(),
            performance: performance()
        }
       // debugger;
            data.reportURL = 'http://127.0.0.1:3002/performance/report';
            godebug.emit('report', data);
        })
    godebug.on('report', (data) => {
        ///  _log('上报')
        utils.extend(data, baseData())
        // data.key = 'ssss'
        _log(baseData)
        if (godebug.simple) {
            let d = [];
            for (let item in data) {
                let value = data[item];
                if (typeof value == 'object') {
                    value = JSON.stringify(value);
                }
                d.push(`${item}=${value}`);
            }
            (new Image()).src = data.reportURL + '?' + d.join('&');
        } else {
            ajax({
                url: data.reportURL+'?key='+data.key,
                // header:{
                //   key:data.key,
                // },
                data: data
            })
        }

    })
    godebug.on('resourceError', (data) => {
        _log('resourceError', data);
        //data.type =
        godebug.emit('error', data);
    })
    godebug.on('error', (data) => {
        // data.baseData = baseData;
        //utils.extend(data,baseData)
        _log('发生错误', data)

        //debuggerss
        data.reportURL = godebug.errorURL;
        //状态
        data.status = 0;
        // debuggersss
        return;
        godebug.emit('report', data)
        _log('error')
        try {
            _log(JSON.stringify(data))
        } catch (error) {
            _log(data)
        }

    })
    godebug.on('send', function(res) {
        // console.log('send', utils.getReqUrl(res.reqUrl))
       _log('send',this.isReady,res.reqUrl)
        if (!this.isReady) {
            _log('*****************', utils.getReqUrl(res.reqUrl))
            this.$$reqUrlCount++;
            this.$$reqUrl[utils.getReqUrl(res.reqUrl)] = 'pending';
        }

    })
    godebug.on('sendLog', res => {
        ajax({
            url: '//127.0.0.1:3002/sendLog',
            // type:'get',
            data: res
        })
    })

}())